home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_gwu / hdr.h < prev    next >
C/C++ Source or Header  |  1996-01-30  |  17KB  |  701 lines

  1. #ifndef _hdr_h
  2. #define _hdr_h
  3.  
  4. #define SEQ_NODE_INC 50
  5. #define SEQ_SYMBOL_INC    50
  6.  
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <ctype.h>
  10. #include <string.h>
  11. #include "config.h"
  12. #include "arith.h"
  13.  
  14. typedef struct Declaredmap_s *Declaredmap;
  15.  
  16. #ifdef AMIABLE
  17. #else
  18. #include "symbol.h"
  19. #endif
  20.  
  21. typedef struct Span_s *Span;   /* pointer to spans information */
  22.  
  23. typedef struct Span_s {
  24.     short line;
  25.     short col;
  26. } Span_s;
  27.  
  28. typedef struct Node_s *Node; /* Node is pointer to Node_s */
  29. #define NODE_SIZE  sizeof(Node_s)
  30.  
  31. typedef struct Node_s
  32. {
  33. #ifndef IBM_PC
  34.     struct {
  35.     unsigned n_kind:8;
  36.     unsigned n_unit:8;
  37.     unsigned n_side:1;
  38.     unsigned n_overloaded:1;
  39.     } n_flags;
  40.     
  41.     short n_seq;
  42. #else
  43.     struct {
  44.     unsigned n_kind:8;
  45.     unsigned n_unit:8;
  46.     } n_flag1;
  47.  
  48.     struct {
  49.     unsigned n_side:1;
  50.     unsigned n_seq:14;
  51.     unsigned n_overloaded:1;
  52.     } n_flag2;
  53.  
  54. #endif
  55.  
  56.     union {
  57.     Node    n_ast1;
  58.     Span_s    n_span;
  59.     } nu1;
  60.  
  61.      union {
  62.     Node    n_ast2;
  63.     Tuple    n_list;
  64.     char    *n_val; 
  65.     int n_id;
  66.     } nu2;
  67.      union { 
  68.     Node    n_ast3;
  69.     Set    n_names;
  70.     Symbol    n_unq; 
  71.     } nu3;
  72.      union {
  73.     Node    n_ast4;
  74.     Set    n_ptypes;
  75.     Symbol    n_type; 
  76.     } nu4;
  77. #ifdef AMIABLE
  78.     Operand_s n_operand;
  79. #endif
  80. }  Node_s;
  81.  
  82. struct unit {
  83.     char *name;
  84.     int isMain;
  85.     char *libUnit;
  86.     struct {
  87.         char *fname;
  88.         char *obsolete;
  89.         char *currCodeSeg;
  90.         char *localRefMap;
  91.         char *compDate;
  92.     } libInfo;
  93.     struct {
  94.         char *preComp;
  95.         char *pragmaElab;
  96.         char *compDate;
  97.         char *symbols;
  98.         int  numberSymbols;
  99.         char *unitDecl;
  100.     } aisInfo;
  101.     struct {
  102.         char *tableAllocated;
  103.         int nodeCount;
  104.         int rootSeq;
  105.     } treInfo;
  106. };
  107.  
  108. #define MAX_UNITS 100
  109.  
  110. #ifdef IBM_PC
  111. #define N_KIND(p)    ((p)->n_flag1.n_kind)
  112. #define N_UNIT(p)    ((p)->n_flag1.n_unit)
  113. #define N_OVERLOADED(p)    ((p)->n_flag2.n_overloaded)
  114. #define N_SIDE(p)    ((p)->n_flag2.n_side)
  115. #define N_SEQ(p)    ((p)->n_flag2.n_seq)
  116. #else
  117. #define N_KIND(p)    ((p)->n_flags.n_kind)
  118. #define N_UNIT(p)    ((p)->n_flags.n_unit)
  119. #define N_OVERLOADED(p)    ((p)->n_flags.n_overloaded)
  120. #define N_SIDE(p)    ((p)->n_flags.n_side)
  121. #define N_SEQ(p)    ((p)->n_seq)
  122. #endif
  123. #define N_SPAN(p)    (&(p)->nu1.n_span)
  124. #define N_SPAN0(p)    ((p)->nu1.n_span.line)
  125. #define N_SPAN1(p)    ((p)->nu1.n_span.col)
  126. #define N_AST1(p)    ((p)->nu1.n_ast1)
  127. #define N_VAL(p)    ((p)->nu2.n_val)
  128. #define N_LIST(p)    ((p)->nu2.n_list)
  129. #define N_AST2(p)    ((p)->nu2.n_ast2)
  130. #define N_AST3(p)    ((p)->nu3.n_ast3)
  131. #define N_UNQ(p)    ((p)->nu3.n_unq)
  132. #define N_ID(p)         ((p)->nu2.n_id)
  133. #define N_NAMES(p)    ((p)->nu3.n_names)
  134. #define N_AST4(p)    ((p)->nu4.n_ast4)
  135. #define N_TYPE(p)    ((p)->nu4.n_type)
  136. #define N_PTYPES(p)    ((p)->nu4.n_ptypes)
  137. #ifdef AMIABLE
  138. #define N_OPERAND(p)    ((p)->n_operand)
  139. #endif
  140.  
  141. #define N_D_AST1 1
  142. #define N_D_AST2 2
  143. #define N_D_AST3 4
  144. #define N_D_AST4 8
  145. #define N_D_LIST 16
  146. #define N_D_VAL 32
  147. #define N_D_UNQ 64
  148. #define N_D_TYPE 256
  149.  
  150. #define N_AST1_DEFINED(p) (N_DEFINED[p]&N_D_AST1)
  151. #define N_AST2_DEFINED(p) (N_DEFINED[p]&N_D_AST2)
  152. #define N_AST3_DEFINED(p) (N_DEFINED[p]&N_D_AST3)
  153. #define N_AST4_DEFINED(p) (N_DEFINED[p]&N_D_AST4)
  154. #define N_VAL_DEFINED(p) (N_DEFINED[p]&N_D_VAL)
  155. #define N_UNQ_DEFINED(p) (N_DEFINED[p]&N_D_UNQ)
  156. #define N_TYPE_DEFINED(p) (N_DEFINED[p]&N_D_TYPE)
  157. #define N_LIST_DEFINED(p) (N_DEFINED[p]&N_D_LIST)
  158.  
  159. #define as_pragma  0
  160. #define as_arg    1
  161. #define as_obj_decl  2
  162. #define as_const_decl  3
  163. #define as_num_decl  4
  164. #define as_type_decl  5
  165. #define as_subtype_decl     6
  166. #define as_subtype_indic  7
  167. #define as_derived_type     8
  168. #define as_range  9
  169. #define as_range_attribute  10
  170. #define as_constraint  11
  171. #define as_enum     12
  172. #define as_int_type  13
  173. #define as_float_type  14
  174. #define as_fixed_type  15
  175. #define as_digits  16
  176. #define as_delta  17
  177. #define as_array_type  18
  178. #define as_box    19
  179. #define as_subtype  20
  180. #define as_record  21
  181. #define as_component_list  22
  182. #define as_field  23
  183. #define as_discr_spec  24
  184. #define as_variant_decl     25
  185. #define as_variant_choices  26
  186. #define as_string  27
  187. #define as_simple_choice  28
  188. #define as_range_choice     29
  189. #define as_choice_unresolved  30
  190. #define as_others_choice  31
  191. #define as_access_type    32
  192. #define as_incomplete_decl  33
  193. #define as_declarations     34
  194. #define as_labels  35
  195. #define as_character_literal  36
  196. #define as_simple_name    37
  197. #define as_call_unresolved  38
  198. #define as_selector  39
  199. #define as_all    40
  200. #define as_attribute  41
  201. #define as_aggregate  42
  202. #define as_parenthesis    43
  203. #define as_choice_list    44
  204. #define as_op  45
  205. #define as_in  46
  206. #define as_notin  47
  207. #define as_un_op  48
  208. #define as_int_literal    49
  209. #define as_real_literal     50
  210. #define as_string_literal  51
  211. #define as_null     52
  212. #define as_name     53
  213. #define as_qualify  54
  214. #define as_new_init  55
  215. #define as_new    56
  216. #define as_statements  57
  217. #define as_statement  58
  218. #define as_null_s  59
  219. #define as_assignment  60
  220. #define as_if  61
  221. #define as_cond_statements  62
  222. #define as_condition  63
  223. #define as_case     64
  224. #define as_case_statements  65
  225. #define as_loop     66
  226. #define as_while  67
  227. #define as_for    68
  228. #define as_forrev  69
  229. #define as_block  70
  230. #define as_exit     71
  231. #define as_return  72
  232. #define as_goto     73
  233. #define as_subprogram_decl  74
  234. #define as_procedure  75
  235. #define as_function  76
  236. #define as_operator  77
  237. #define as_formal  78
  238. #define as_mode     79
  239. #define as_subprogram  80
  240. #define as_call     81
  241. #define as_package_spec     82
  242. #define as_package_body     83
  243. #define as_private_decl     84
  244. #define as_use    85
  245. #define as_rename_obj  86
  246. #define as_rename_ex  87
  247. #define as_rename_pack    88
  248. #define as_rename_sub  89
  249. #define as_task_spec  90
  250. #define as_task_type_spec  91
  251. #define as_task     92
  252. #define as_entry  93
  253. #define as_entry_family     94
  254. #define as_accept  95
  255. #define as_delay  96
  256. #define as_selective_wait  97
  257. #define as_guard  98
  258. #define as_accept_alt  99
  259. #define as_delay_alt  100
  260. #define as_terminate_alt  101
  261. #define as_conditional_entry_call  102
  262. #define as_timed_entry_call  103
  263. #define as_abort  104
  264. #define as_unit     105
  265. #define as_with_use_list  106
  266. #define as_with     107
  267. #define as_subprogram_stub  108
  268. #define as_package_stub     109
  269. #define as_task_stub  110
  270. #define as_separate  111
  271. #define as_exception  112
  272. #define as_except_decl    113
  273. #define as_handler  114
  274. #define as_others  115
  275. #define as_raise  116
  276. #define as_generic_function  117
  277. #define as_generic_procedure  118
  278. #define as_generic_package  119
  279. #define as_generic_formals  120
  280. #define as_generic_obj    121
  281. #define as_generic_type     122
  282. #define as_gen_priv_type  123
  283. #define as_generic_subp     124
  284. #define as_generic  125
  285. #define as_package_instance  126
  286. #define as_function_instance  127
  287. #define as_procedure_instance  128
  288. #define as_instance  129
  289. #define as_length_clause  130
  290. #define as_enum_rep_clause  131
  291. #define as_rec_rep_clause  132
  292. #define as_compon_clause  133
  293. #define as_address_clause  134
  294. #define as_any_op  135
  295. #define as_opt    136
  296. #define as_list     137
  297. #define as_range_expression  138
  298. #define as_arg_assoc_list  139
  299. #define as_private  140
  300. #define as_limited_private  141
  301. #define as_code     142
  302. #define as_line_no  143
  303. #define as_index  144
  304. #define as_slice  145
  305. #define as_number  146
  306. #define as_convert  147
  307. #define as_entry_name  148
  308. #define as_array_aggregate  149
  309. #define as_record_aggregate  150
  310. #define as_ecall  151
  311. #define as_call_or_index  152
  312. #define as_ivalue  153
  313. #define as_qual_range  154
  314. #define as_qual_index  155
  315. #define as_qual_discr  156
  316. #define as_qual_arange    157
  317. #define as_qual_alength     158
  318. #define as_qual_adiscr    159
  319. #define as_qual_aindex    160
  320. #define as_check_bounds     161
  321. #define as_discr_ref  162
  322. #define as_row    163
  323. #define as_current_task     164
  324. #define as_check_discr    165
  325. #define as_end    166
  326. #define as_terminate 167
  327. #define as_exception_accept 168
  328. #define as_test_exception 169
  329. #define as_create_task 170
  330. #define as_predef    171
  331. #define as_deleted 172
  332. #define as_insert 173
  333. #define as_arg_convert 174
  334. #define as_end_activation 175
  335. #define as_activate_spec 176
  336. #define as_delayed_type 177
  337. #define as_qual_sub 178
  338. #define as_static_comp 179
  339. #define as_array_ivalue 180
  340. #define as_record_ivalue 181
  341. #define as_expanded 182
  342. #define as_choices 183
  343. #define as_init_call 184
  344. #define as_type_and_value 185
  345. #define as_discard 186
  346. #define as_unread 187
  347. #define as_string_ivalue 188
  348. #define as_instance_tuple 189
  349. #define as_entry_family_name 190
  350. #define as_astend    191
  351. #define as_astnull    192
  352. #define as_aggregate_list 193
  353. #define as_interfaced 194
  354. #define as_record_choice 195
  355. #define as_subprogram_decl_tr 196
  356. #define as_subprogram_tr 197
  357. #define as_subprogram_stub_tr 198
  358. #define as_rename_sub_tr 199
  359.  
  360. #define na_op  1
  361. #define na_un_op  2
  362. #define na_attribute  3
  363. #define na_obj    4
  364. #define na_constant  5
  365. #define na_type     6
  366. #define na_subtype  7
  367. #define na_array  8
  368. #define na_record  9
  369. #define na_enum     10
  370. #define na_literal  11
  371. #define na_access  12
  372. #define na_aggregate  13
  373. #define na_block  14
  374. #define na_procedure_spec  15
  375. #define na_function_spec  16
  376. #define na_procedure  17
  377. #define na_function  18
  378. #define na_in  19
  379. #define na_inout  20
  380. #define na_out    21
  381. #define na_package_spec     22
  382. #define na_package  23
  383. #define na_task_type  24
  384. #define na_task_type_spec  25
  385. #define na_task_obj  26
  386. #define na_task_obj_spec  27
  387. #define na_entry  28
  388. #define na_entry_family     29
  389. #define na_entry_former     30
  390. #define na_generic_procedure_spec  31
  391. #define na_generic_function_spec  32
  392. #define na_generic_package_spec     33
  393. #define na_generic_procedure  34
  394. #define na_generic_function  35
  395. #define na_generic_package  36
  396. #define na_exception  37
  397. #define na_private_part     38
  398. #define na_void     39
  399. #define na_null     40
  400. #define na_discriminant     41
  401. #define na_field  42
  402. #define na_label  43
  403. #define na_generic_part     44
  404. #define na_subprog 45
  405. #define na_body 46
  406. #define na_task 47
  407. #define na_task_body 48
  408.  
  409. #define BLOCK_BLOCK    0
  410. #define BLOCK_LOOP    1
  411. #define BLOCK_HANDLER    2
  412.  
  413. typedef struct Private_declarations_s 
  414. {
  415.     Tuple    private_declarations_tuple;    
  416. } Private_declarations_s;
  417. typedef Private_declarations_s    *Private_declarations;
  418.  
  419. typedef struct    Forprivate_decls {
  420.     Tuple    forprivate_tup;
  421.     int    forprivate_i;
  422.     int    forprivate_n;
  423. } Forprivate_decls;
  424.  
  425. #define FORPRIVATE_DECLS(s1,s2,pd,fp) \
  426.      fp.forprivate_tup = (Tuple) (pd)->private_declarations_tuple; \
  427.      fp.forprivate_n = tup_size(fp.forprivate_tup) ; \
  428.       for (fp.forprivate_i=1; fp.forprivate_i<=fp.forprivate_n;) { \
  429.     s1 = (Symbol) fp.forprivate_tup[fp.forprivate_i++]; \
  430.     s2 = (Symbol) fp.forprivate_tup[fp.forprivate_i++];
  431.  
  432. #define ENDFORPRIVATE_DECLS(fp) }
  433.  
  434. #define TA_ISPRIVATE  1
  435. #define TA_INCOMPLETE 2
  436. #define TA_LIMITED    4
  437. #define TA_LIMITED_PRIVATE    8
  438. #define TA_PRIVATE        16
  439. #define TA_OUT            32
  440. #define TA_GENERIC        64
  441. #define TA_CONSTRAIN        128
  442.  
  443. #define CONSTRAINT_RANGE 0
  444. #define CONSTRAINT_DIGITS 1
  445. #define CONSTRAINT_DELTA 2
  446. #define CONSTRAINT_DISCR 3
  447. #define CONSTRAINT_ARRAY 4
  448. #define CONSTRAINT_ACCESS 6
  449.  
  450. #define numeric_constraint_kind(p) p[1]
  451. #define numeric_constraint_low(p) p[2]
  452. #define numeric_constraint_high(p) p[3]
  453. #define numeric_constraint_digits(p) p[4]
  454. #define numeric_constraint_delta(p) p[4]
  455. #define numeric_constraint_small(p) p[5]
  456. #define numeric_constraint_discr(p) p[2]
  457.  
  458. typedef struct Declaredmap_s
  459. {
  460.     short        dmap_curlen;    /* current number of elements */
  461.     short        dmap_maxlen;    /* maximum number of elements */
  462.     struct Dment    *dmap_table;    /* pointer to entry list */
  463.  } Declaredmap_s;
  464.  
  465. typedef struct Dment
  466. {
  467.     struct {
  468. #ifdef IBM_PC
  469.     unsigned    dment_idnum ;   /* source identifier number */
  470.     unsigned    dment_visible ;  /* non-zero if visible */
  471. #else
  472.     unsigned    dment_idnum : 15;   /* source identifier number */
  473.     unsigned    dment_visible : 1;  /* non-zero if visible */
  474. #endif
  475.     } dment_i;
  476.     Symbol        dment_symbol;        /* symbol table pointer */
  477. }  Dment;
  478.  
  479. typedef struct    Fordeclared {
  480.     Declaredmap fordeclared_map;
  481.     unsigned short    fordeclared_i;
  482.     unsigned short    fordeclared_n;
  483.     struct Dment *fordeclared_dment;
  484. } Fordeclared;
  485.  
  486. extern char *dstrings;
  487.  
  488. #define FORDECLARED(str,sym,dmap,iv) \
  489.     iv.fordeclared_map = dmap; \
  490.     iv.fordeclared_n = iv.fordeclared_map->dmap_curlen;\
  491.     iv.fordeclared_dment = iv.fordeclared_map->dmap_table; \
  492.     for (iv.fordeclared_i=0; iv.fordeclared_i<iv.fordeclared_n; \
  493.     (iv.fordeclared_i++,iv.fordeclared_dment++)) { \
  494.       str = dstrings + iv.fordeclared_dment->dment_i.dment_idnum;\
  495.       sym = iv.fordeclared_dment->dment_symbol;\
  496.  
  497. #define ENDFORDECLARED(iv) }
  498. #define IS_VISIBLE(iv) iv.fordeclared_dment->dment_i.dment_visible 
  499. #define SETDECLAREDVISIBLE(iv,n) \
  500.     IS_VISIBLE(iv) = n;    
  501. #define FORVISIBLE(str,sym,dmap,iv) \
  502.     FORDECLARED(str,sym,dmap,iv) \
  503.         if (IS_VISIBLE(iv)==0) continue;
  504.  
  505. #define ENDFORVISIBLE(iv) }
  506.  
  507. typedef struct Const_s    *Const;
  508. typedef struct Const_s {
  509.     int    const_kind;
  510.     union    {
  511.         int    const_int;
  512.         int    *const_uint;
  513.         double    const_real;
  514.         char    *const_str;
  515.         Rational    const_rat;
  516.         long    const_fixed;
  517.         } const_value;
  518.     } Const_s;
  519.  
  520. #ifdef IVALUE
  521. typedef struct Ivalue_s *Ivalue;
  522. typedef struct Ivalue_s {
  523.     int    ivalue_kind;
  524.     union    {
  525.         int    ivalue_int;
  526.         int    *ivalue_uint;
  527.         double    ivalue_real;
  528.         char    *ivalue_str;
  529.         Rational    ivalue_rat;
  530.         long    ivalue_fixed;
  531.         } ivalue_value;
  532.     } Ivalue_s;
  533. #endif
  534. #define CONST_OM    0
  535. #define CONST_INT    1
  536. #define CONST_REAL    2
  537. #define CONST_STR    3
  538. #define CONST_RAT    4
  539. #define CONST_CONSTRAINT_ERROR 5
  540. #define CONST_UINT    6
  541. #define CONST_FIXED    7
  542.  
  543. #define is_const_om(c) ((c)->const_kind == CONST_OM)
  544. #define is_const_int(c) ((c)->const_kind == CONST_INT)
  545. #define is_const_real(c) ((c)->const_kind == CONST_REAL)
  546. #define is_const_str(c) ((c)->const_kind == CONST_STR)
  547. #define is_const_rat(c) ((c)->const_kind == CONST_RAT)
  548. #define is_const_constraint_error(c) ((c)->const_kind == CONST_CONSTRAINT_ERROR)
  549. #define is_const_uint(c) ((c)->const_kind == CONST_UINT)
  550. #define is_const_fixed(c) ((c)->const_kind == CONST_FIXED)
  551.  
  552. #ifdef IVALUE
  553. #define IVALUE_OM    0
  554. #define IVALUE_INT    1
  555. #define IVALUE_REAL    2
  556. #define IVALUE_STR    3
  557. #define IVALUE_RAT    4
  558. #define IVALUE_CONSTRAINT_ERROR 5
  559. #define IVALUE_UINT    6
  560. #define IVALUE_FIXED    7
  561. #endif
  562.  
  563. #define INTV(op) (op)->const_value.const_int
  564. #define UINTV(op) (op)->const_value.const_uint
  565. #define REALV(op) (op)->const_value.const_real
  566. #define RATV(op) (op)->const_value.const_rat
  567. #define FIXEDV(op) (op)->const_value.const_fixed
  568.  
  569.     
  570.  
  571. typedef struct Symbolmap_s 
  572. {
  573.     Tuple    symbolmap_tuple;    
  574. } Symbolmap_s;
  575. typedef Symbolmap_s    *Symbolmap;
  576.  
  577. typedef struct    Forsymbol {
  578.     Tuple    forsymbolmap_tuple;
  579.     int    forsymbolmap_i;
  580.     int    forsymbolmap_n;
  581. } Forsymbol;
  582.  
  583. #define FORSYMBOL(s1,s2,pd,fp) \
  584.      fp.forsymbolmap_tuple = (Tuple) (pd)->symbolmap_tuple; \
  585.      fp.forsymbolmap_n = tup_size(fp.forsymbolmap_tuple) ; \
  586.       for (fp.forsymbolmap_i=1; fp.forsymbolmap_i<=fp.forsymbolmap_n;) { \
  587.     s1 = (Symbol) fp.forsymbolmap_tuple[fp.forsymbolmap_i++]; \
  588.     s2 = (Symbol) fp.forsymbolmap_tuple[fp.forsymbolmap_i++];
  589.  
  590. #define ENDFORSYMBOL(fp) }
  591.  
  592. typedef struct Nodemap_s 
  593. {
  594.     Tuple    nodemap_tuple;    
  595. } Nodemap_s;
  596. typedef Nodemap_s    *Nodemap;
  597.  
  598. #define find ???
  599.  
  600. #define is_empty(node) ((int)node[0] == 0)
  601.  
  602. #define attribute_name(node) N_VAL(N_AST1(node))
  603.  
  604. #define attribute_kind(node) N_VAL(N_AST1((node)))
  605.  
  606. #define root_type(type_mark) ((type_mark)->alias)
  607.  
  608. #define index_types(array_type) ((Tuple) ((array_type)->signature)[1])
  609.  
  610. #define component_type(array_type) ((Symbol) ((array_type)->signature)[2])
  611.  
  612. #define index_type(array_type)    ((Tuple) (index_types(array_type))[1])
  613.  
  614. #define literal_map(enumeration) ((enumeration)->overloads)
  615.  
  616. #define record_declarations(record) ((record)->signature)
  617.  
  618. #ifdef TBSN
  619. -- all_components should be dead    ds 14 aug
  620. #define all_components(record) (((record)->signature)[1])
  621. #endif
  622.  
  623. #define discriminant_list(record) ((Tuple) ((record)->signature)[3])
  624.  
  625. #define invariant_part(record) ((Tuple) ((record)->signature)[1])
  626.  
  627. #define variant_part(record)    ((Tuple) ((record)->signature)[2])
  628.  
  629. #define declared_components(record) ((Tuple) ((record)->signature)[4])
  630.  
  631. #define discr_decl_tree(record) ((Tuple) ((record)->signature)[5])
  632.  
  633. #define has_discriminants(record) \
  634.     (discriminant_list(root_type(record)) != (Tuple) 0  &&   \
  635.      tup_size(discriminant_list(root_type(record))) != 0)
  636.  
  637. #define designated_type(access_type)                      \
  638.     (((NATURE(access_type)==na_subtype)                  \
  639.         ? (Symbol)((access_type)->signature)[2]          \
  640.         : (Symbol)((access_type)->signature) ))
  641.  
  642. #define label_status(lab) ((lab)->signature)
  643.  
  644. #define default_expr(nam) ((nam)->signature)
  645.  
  646. #define formal_decl_tree(proc_name)  ((proc_name)->init_proc)
  647.  
  648. #define IS_COMP_UNIT (tup_size(scope_st)==0)
  649.  
  650. #define is_literal(name) (NATURE((name)) == na_literal)
  651.  
  652. #define is_constant(name) ((name)!=(Symbol) 0 && NATURE((name))== na_constant)
  653.  
  654. #define is_anonymous(typ)  (*(ORIG_NAME(typ)) == '&')
  655.  
  656. #define is_array(typ) (NATURE(base_type(typ)) == na_array)
  657.  
  658. #define is_formal(id) (NATURE(id)==na_in || NATURE(id)==na_out     \
  659.             || NATURE(id)==na_inout)
  660.  
  661. #define misc_type_attributes(type_mark) TYPE_ATTR(type_mark)
  662.  
  663. #define private_dependents(type_mark)    OVERLOADS(type_mark)
  664.  
  665. #define private_decls(package) OVERLOADS(package) 
  666.  
  667. #ifdef TBSN
  668. #define use_declarations(package) \
  669.     SIGNATURE(dcl_get(DECLARED(package),"$used"))
  670. #endif
  671.  
  672. #define TO_XREF(name)
  673.  
  674. #define TO_ERRFILE(text) to_errfile(text)
  675.  
  676. #define        errmsg_l(msg1,msg2,lrm,node)        \
  677.             errmsg(strjoin(msg1,msg2),lrm,node)
  678. #define        errmsg_l_id(msg1,msg2,name,lrm,node)    \
  679.             errmsg_id(strjoin(msg1,msg2),name,lrm,node)
  680. #define        errmsg_l_str(msg1,msg2,str,lrm,node)        \
  681.             errmsg_str(strjoin(msg1,msg2),str,lrm,node)
  682. extern int N_DEFINED[];
  683.  
  684. #define POWER_OF_2_EXACT 0
  685. #define POWER_OF_2_APPROXIMATE 1
  686.  
  687. #ifdef GEN
  688. #include "ghdr.h"
  689. #endif
  690.  
  691. #define TAG_RECORD              0
  692. #define TAG_TASK                1
  693. #define TAG_ACCESS              2
  694. #define TAG_ARRAY               3
  695. #define TAG_ENUM                4
  696. #define TAG_FIXED               5
  697. #define TAG_INT                 6
  698. #define TAG_FLOAT               7
  699.  
  700. #endif
  701.